package com.niuwa.p2p.service.fund;

import java.util.List;
import java.util.Map;

import com.niuwa.p2p.core.mvc.entity.PageBean;
import com.niuwa.p2p.entity.fund.ChlAcctRule;
import com.niuwa.p2p.entity.fund.CustAcctRule;
import com.niuwa.p2p.entity.fund.PayPartner;
import com.niuwa.p2p.entity.fund.PayPartnerDetail;
import com.niuwa.p2p.entity.fund.PayPartnerFile;
import com.niuwa.p2p.entity.nwfile.NWFile;
import com.niuwa.p2p.vo.fund.PayPartnerForm;

/**
 * 第三方管理-合作机构
 * @author Dell
 *
 */
public interface IPayPartnerService {

	/**
	 * 查询符合条件的合作机构
	 * @param paramMap
	 * @return
	 */
	public PageBean<PayPartner> selectPartnerBySelective(Map<String, Object> paramMap);
	
	/**
     * 根据机构编号获取机构信息 
     * @param partnerCode
     * @return
     */
    PayPartner selectByPrimaryKey(String partnerCode);
    
    /**
     * 根据机构编号获取变更记录
     * @param partnerCode
     * @return
     */
    List<PayPartnerDetail> selectDetailByPartnerNo(String partnerCode);
    
    /**
     * 添加变更记录
     * @param partnerDetail  变更记录信息
     * @param protFileID 上传文件IDs
     * @param operator 当前登录者ID
     * @return
     * @throws Exception
     */
    public int addPartnerDetail(PayPartnerDetail partnerDetail, List<Long> protFileID) throws Exception;

    /**
	 * 新增合作机构
	 * @param form 
	 * 
	 * @throws Exception
	 */
	public void insert(PayPartnerForm form, List<Long> payPartnerFileID, long userId) throws Exception;
	
	/**
	 * 更新合作机构
	 * @param form 
	 * 
	 * @throws Exception
	 */
	public void update(PayPartnerForm form, List<Long> payPartnerFileID, long userId) throws Exception;
	
	/**
     * 根据机构名称获取机构是否存在
     * @param partnerName
     * @return
     */
    public int selectPartnerByPartnerName(String partnerName);
    
    /**
	 * 获取所有有效的合作机构名称
	 * @return
	 */
	public List<PayPartner> selectAllValidPartnerName();
	
	/**
     * 根据合作机构编号查找客户账户规则信息
     * @param partnerNo
     * @return
     */
    CustAcctRule selectCustRuleByPartnerNo(String partnerNo);
    
    /**
     * 根据合作机构编号查找渠道账户规则信息
     * @param partnerNo
     * @return
     */
    ChlAcctRule selectChlRuleByPartnerNo(String partnerNo);
    
    /**
     * 查找与合作机构相关联的协议文件
     * @param partnerNo
     * @return
     */
    List<PayPartnerFile> selectFileByPartnerNo(String partnerNo);
    
    
    /**
	 * 获取变更记录相关附件
	 */
	public List<NWFile> selectPartnerDetailFileByDetailId(long detailId);
	
	/**
	 * 获取机构相关文件
	 * @return
	 * @throws Exception
	 */
	List<NWFile> selectPartnerFileByPartnerNo(String partnerCode);

    
}
